package pe.gob.foncodes.ssa.web.controller;

import java.util.List;
import java.util.ArrayList;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import org.apache.log4j.Logger;

import pe.gob.foncodes.ssa.bs.administracion.controller.GenericMaintenanceController;
import pe.gob.foncodes.ssa.bs.seguridad.domain.Conexion;

public class ConexionController extends GenericMaintenanceController {
    protected static Logger log = Logger.getLogger(ConexionController.class);
    
    private List<Conexion> lstConexiones = new ArrayList<Conexion>();
    private Conexion selectedConexion= new Conexion();
    private String txtBusDatabase;
    private boolean esNuevo;
    
    @Override
    public void init() {
        selectedConexion = null;
        esNuevo = false;
        lstConexiones = new ArrayList<Conexion>();
        setBeanList(lstConexiones);
    }

    @Override
    public void search(ActionEvent event) throws Exception{
        if(this.txtBusDatabase == null)
            this.txtBusDatabase = "";
        lstConexiones = getService().findByNamedQuery("Conexion.findByTxtDatabase", new Object[]{txtBusDatabase + "%"});
        setBeanList(lstConexiones);
        selectedConexion = null;
    }
    
    public void limpiar(){
        this.txtBusDatabase = "";
        lstConexiones = new ArrayList<Conexion>();
        setBeanList(lstConexiones);
        selectedConexion = null;
    }
    
    public String verDetallesConexion(){
        if(this.selectedConexion == null){
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error", "Debe seleccionar un registro"));
            esNuevo = false;
            return null;
        }else{
            esNuevo = true;
            return "DetalleConexiones";
        }
    }
    
    public void saveConexion(ActionEvent event) throws Exception {
        Conexion conexion =(Conexion)getBean();
        try {
            //Nuevo
            if(esNuevo){
                if (validate()) {
                    setBean(conexion);
                    super.doSave(event);
                }
            //Modificar
            }else{
                if (validate()) {
                    super.doUpdate(event);
                }
            }
        } catch (Exception e) {
            log.error(e);
        }
    }
    
    @Override
    public boolean validate() throws Exception{
        boolean success = true;
        
        return success;
    }
    
    public List<Conexion> getLstConexiones() {
        return lstConexiones;
    }

    public void setLstConexiones(List<Conexion> lstConexiones) {
        this.setLstConexiones(lstConexiones);
    }

    public Conexion getSelectedConexion() {
        return selectedConexion;
    }
    
    public void setSelectedConexion(Conexion selectedConexion) {
        this.selectedConexion = selectedConexion;
    }

    public String getTxtBusDatabase() {
        return txtBusDatabase;
    }

    public void setTxtBusDatabase(String txtBusDatabase) {
        this.txtBusDatabase = txtBusDatabase;
    }
    
}
